# DMLExecutor.java

    package org.codefilarete.stalactite.engine.runtime;

    import org.codefilarete.stalactite.mapping.EntityMapping;
    import org.codefilarete.stalactite.sql.statement.DMLGenerator;
    import org.codefilarete.stalactite.sql.ddl.structure.Table;
    import org.codefilarete.stalactite.sql.ConnectionProvider;

    /**
     * CRUD Persistent features dedicated to an entity class. Kind of sliding door of {@link BeanPersister} aimed at running
     * actions for it.
     *
     * @author Guillaume Mary
     */
    public abstract class DMLExecutor<C, I, T extends Table<T>> {

    	private final EntityMapping<C, I, T> mapping;
    	private final ConnectionProvider connectionProvider;
    	private final DMLGenerator dmlGenerator;
    	private final int inOperatorMaxSize;

    	public DMLExecutor(EntityMapping<C, I, T> mapping, ConnectionProvider connectionProvider,
    					   DMLGenerator dmlGenerator, int inOperatorMaxSize) {
    		this.mapping = mapping;
    		this.connectionProvider = connectionProvider;
    		this.dmlGenerator = dmlGenerator;
    		this.inOperatorMaxSize = inOperatorMaxSize;
    	}

    	public EntityMapping<C, I, T> getMapping() {
    		return mapping;
    	}

    	public ConnectionProvider getConnectionProvider() {
    		return connectionProvider;
    	}

    	public DMLGenerator getDmlGenerator() {
    		return dmlGenerator;
    	}

    	public int getInOperatorMaxSize() {
    		return inOperatorMaxSize;
    	}

    }